package com.server.dao;

import com.server.model.Livro;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class LivroDAO extends GenericDAO{
    
   public int create(Livro livro){
      String sql = "INSERT INTO Livro (Id, Titulo, Autor, Data_publicacao) values (" ;
               sql += livro.getId() + ",'" + livro.getTitulo() + "'" +
              ", '" +  livro.getAutor()+ "'" + ", '" + livro.getData_publicacao() +  "')";
               
               try{
                   Connection con = super.getConnection();
                   Statement stmt = super.createStatement();
                   int res = stmt.executeUpdate(sql);
                   if (res > 0)
                    return res;
                           
               }catch(SQLException sqle){
                 sqle.printStackTrace();
               }
        return -1;
    }
    
     public int delete(Livro livro){
        
      String sql = "DELETE FROM Livro WHERE  Id = " +  livro.getId() ;
               
               try{
                   Connection con = super.getConnection();
                   Statement stmt = super.createStatement();
                   int res = stmt.executeUpdate(sql);
                   if (res > 0)
                    return res;
                           
               }catch(SQLException sqle){
                 sqle.printStackTrace();
               }
        return -1;
    }
    
    public void update(Livro livro,int novo_id, 
                       String novo_titulo, String novo_autor, String nova_data){
        
        String sql = "UPDATE Livro SET Id =" + novo_id + ","
                + "Titulo = '" + novo_titulo 
                + "Autor = '" + novo_autor 
                + "Data_publicacao = '" + nova_data 
                + "' WHERE  Id = " +  livro.getId() ;
               
               try{
                   Connection con = super.getConnection();
                   Statement stmt = super.createStatement();
                   int res = stmt.executeUpdate(sql);
                           
               }catch(SQLException sqle){
                 sqle.printStackTrace();
               }
        
    }
    
    public void selectUsingId (int id){
        
         String sql = "SELECT * FROM Livro WHERE Id = " + id;
               
               try{
                   Connection con = super.getConnection();
                   Statement stmt = super.createStatement();
                   ResultSet res = stmt.executeQuery(sql);
                   
                   while (res.next()){
                    int id_sel = res.getInt("Id");
                    String titulo = res.getString("Titulo");
                    String autor = res.getString("Autor");
                    String data = res.getString("Data_publicacao");

                    System.out.format("%s | %s | %s | %s \n",
                            id_sel, titulo, autor, data);
                     }
                   
                           
               }catch(SQLException sqle){
                 sqle.printStackTrace();
               }
        
    }
    
    public ResultSet selectAll (){
        
         String sql = "SELECT * FROM Livro ";
               
               try{
                   Connection con = super.getConnection();
                   Statement stmt = super.createStatement();
                   ResultSet res = stmt.executeQuery(sql);
                   return res;
               }catch(SQLException sqle){
                 sqle.printStackTrace();
               }
    return null;
    }
    
    public int selectMaxId (){
        
        int ultimo_id;
        
         String sql = "SELECT MAX(Id) FROM Livro ";
               
               try{
                   Connection con = super.getConnection();
                   Statement stmt = super.createStatement();
                   ResultSet res = stmt.executeQuery(sql);
                   while (res.next()){
                   ultimo_id = res.getInt("MAX(Id)");
                   return ultimo_id;
                   }
               }catch(SQLException sqle){
                 sqle.printStackTrace();
               }
    return 0;
    }
}
    